<?php
class AuthController extends Zend_Controller_Action {
	
	function init() {
		$this->initGlobalVariables();
	}

	function initGlobalVariables(){
		$this->initView();
		$this->view->baseUrl  = $this->_request->getBaseUrl();
		$this->view->styleUrl = '/styles';
		$this->view->scriptUrl= '/scripts';
		$this->view->imageUrl = '/images';
		$this->view->linkManual = $this->view->baseUrl.'/manual';
		$this->view->linkVoltar = $this->view->baseUrl;
	}
	
	function indexAction() {
		$this->_redirect('/');
	}

	function loginAction() {
		$this->view->action = $this->view->baseUrl . '/auth/login/';
		$this->view->message = '';
		if ($this->_request->isPost()) {
			$filter = new Zend_Filter_StripTags();
			$username = $filter->filter($this->_request->getPost('nomeUsuario'));
			$password = md5($filter->filter($this->_request->getPost('senha')));
			$db = Zend_Registry::get('db');
			$authAdapter = new Zend_Auth_Adapter_DbTable($db);
			$authAdapter->setTableName('usuario');
			$authAdapter->setIdentityColumn('ds_nome');
			$authAdapter->setCredentialColumn('ds_senha');
			$authAdapter->setIdentity($username);
			$authAdapter->setCredential($password);
			$auth = Zend_Auth::getInstance();
			$result = $auth->authenticate($authAdapter);
			if ($result->isValid()) {
				$data = $authAdapter->getResultRowObject(null, 'ds_senha');
				$auth->getStorage()->write($data);
				
				//CARREGAR OS DADOS DO USUÁRIO NA SESSÃO
				$authNamespace = new Zend_Session_Namespace('Zend_Auth');
				$authNamespace->usuario = $username;
				$authNamespace->idUsuario = $authAdapter->getResultRowObject()->id_usuario;
				$authNamespace->idGrupoAcesso =$authAdapter->getResultRowObject()->id_grupo_acesso;

				$login = new Login();
				$login->load($authNamespace->idUsuario);
				if (!$login->isActive()){
					$this->view->message = 'Usuário não está ativo.';
					return;
				}				
				$fisica = new Fisica();
				$fisica->load($login->id_fisica);
				$juridica = new Juridica();
				$juridica->load($fisica->id_juridica);
				$authNamespace->nomeFantasiaEmpresa =$juridica->ds_nome;
				$authNamespace->nomeUsuario         =$fisica->ds_nome_credencial;
				$authNamespace->idFisica			=$fisica->id_fisica;
				
				//carregar o perfil de acesso e o grupo de acesso na sessão
				$grupoAcesso = new GrupoAcesso();
				$grupoAcesso->load($login->id_grupo_acesso);				
				if ($grupoAcesso->in_ativo=='N'){
					$this->view->message="O grupo ".$grupoAcesso->ds_nome." está desativado.";
					return;
				}		
				//$authNamespace->idPerfilAcesso      =$grupoAcesso->id_perfil_acesso;		
				$this->_redirect('/index/');
			} else {
				$this->view->message = 'Falha na autenticacao.';
			}
		}
	}

	function lostAction() {
		$filter = new Zend_Filter();
		$valMail = new Zend_Validate();
		$valUser = new Zend_Validate();
		$filter->addFilter(new Zend_Filter_StripTags())
		       ->addFilter(new Zend_Filter_StringToLower())
		       ->addFilter(new Zend_Filter_StringTrim());
		       
		$valMail->addValidator(new Zend_Validate_EmailAddress());
		$valUser->addValidator(new Zend_Validate_Alnum());
		
		$this->view->title="Recuperar Senha";
		$this->view->usuario=$filter->filter($this->_request->getPost('usuario'));
		$this->view->email	=$filter->filter($this->_request->getPost('email'));
		
		if ($this->_request->isPost()) {
			if (($this->view->email==null && $this->view->usuario==null) || 
				($this->view->email  !=null && !$valMail->isValid($this->view->email)) || 
				($this->view->usuario!=null && !$valUser->isValid($this->view->usuario))){
				$this->view->message = 'Informar usuário ou e-mail válido.';
				return;
			} else {
				$login = new Login();
				if ($login->existsUserEmail($this->view->usuario, $this->view->email)){
					if ($login->isActive()==false){
						$this->view->message.='Usuário está desativado.';
						return;
					}
					$login->setPass();
					$login->salvar();
					$mail = new MailController($this->view->baseUrl);
					$mail->sendLoginLost($login->ds_mail, $login->ds_nome, $login->getPass());

					$mensagem = 'Senha alterada com sucesso!<br>E-mail com usuário e senha foi enviado no endereço '.$login->ds_mail.'.';

					$this->_forward('status', 'util', null,
									array('mensagem'=>$mensagem,
										  'links'	=>null));
					return;
				} else {
					//Montar a mensagem de erro
					if ($this->view->usuario!=null){
						$this->view->message='Usuário ';
					}
					if ($this->view->email!=null){
						if ($this->view->message!=null){
							$this->view->message.='e ';
						}
						$this->view->message.='E-mail ';
					}
					$this->view->message.='não encontrado. Por favor tente novamente.';
				}
			}
		}
		$this->render();
	}

	function logoutAction() {
		Zend_Auth::getInstance()->clearIdentity();
		Zend_Session::destroy();
		$this->_redirect('/auth/login/');
	}

}